package models

import (
	"gorm.io/gorm"
	"order_srv/basic/config"
	"time"
)

// ExceptionLog 异常日志表
type ExceptionLog struct {
	ID          uint64         `gorm:"column:id;type:bigint UNSIGNED;primaryKey;autoIncrement;not null;" json:"id"`
	UserID      uint64         `gorm:"column:user_id;type:bigint UNSIGNED;comment:操作用户ID;default:NULL;" json:"user_id"`
	Module      string         `gorm:"column:module;type:varchar(100);comment:异常模块（如：订单导出）;not null;" json:"module"`
	Exception   string         `gorm:"column:exception;type:varchar(255);comment:异常类型;not null;" json:"exception"`
	ErrorCode   string         `gorm:"column:error_code;type:varchar(50);comment:错误码;default:NULL;" json:"error_code"`
	Message     string         `gorm:"column:message;type:text;comment:异常消息;not null;" json:"message"`
	StackTrace  string         `gorm:"column:stack_trace;type:longtext;comment:堆栈信息;default:NULL;" json:"stack_trace"`
	RequestData string         `gorm:"column:request_data;type:text;comment:请求数据;default:NULL;" json:"request_data"`
	IPAddress   string         `gorm:"column:ip_address;type:varchar(50);comment:IP地址;default:NULL;" json:"ip_address"`
	UserAgent   string         `gorm:"column:user_agent;type:text;comment:用户代理;default:NULL;" json:"user_agent"`
	CreatedAt   time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt   time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt   gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

// Create 创建异常日志
func (log *ExceptionLog) Create() error {
	return config.DB.Create(log).Error
}
